pandas: DataFrame
pandasのDataFrame
pandas: Seriesが集まって構成された2次元のデータ構造
#WIP
MultiIndex
pandasのindex object
immutable
pd.DataFrame()
生成
属性
df.index
行名のインデックス(ラベル)を取得または設定
code:python
print(df.index) # 出力: RangeIndex(start=0, stop=3, step=1)
df.columns
列名を取得または設定
df.shape
pandas: DataFrameの形状(行数と列数)を取得
code:python
print(df.shape) # 出力: (3, 2)
df.dtypes
各列のデータ型を取得
code:python
print(df.dtypes) # 出力:
# A int64
# B int64
# dtype: object
操作
列の参照
列のラベルを指定して列を取得
code:python
print(df'A') # 出力:
# 0 1
# 1 2
# 2 3
# Name: A, dtype: int64
行の参照
行をインデックス番号で指定して取得
code:python
print(df.loc0) # 出力:
# A 1
# B 4
# Name: 0, dtype: int64
複数行・複数列の参照
スライスやリストで複数行・列を指定して取得
code:python
print(df.loc[0:1, 'A', 'B']) # 出力:
# A B
# 0 1 4
# 1 2 5
条件に基づくフィルタリング
条件を満たす行を取得
code:python
print(df[df'A' > 1]) # 出力:
# A B
# 1 2 5
# 2 3 6
新しい列の追加
計算結果やデータを用いて新しい列を追加
code:python
df'C' = df'A' + df'B'
print(df) # 出力:
# A B C
# 0 1 4 5
# 1 2 5 7
# 2 3 6 9
列の削除
色々ある
df.drop()
code:py
# col2とcol3を削除
df = df.drop(columns='col2', 'col3')
カラム削除時に元のDataFrameを保持するか、直接変更するかを選べる(inplace=True)。
複数カラムをまとめて削除したいときにも使いやすい
df.loc(), df.iloc()を使う
code:py
# col2を削除
df = df.loc:, df.columns != 'col2'
# または
df = df.iloc:, df.columns.get_loc('col2') != df.columns
条件に基づいてカラムを削除できる。特定のカラムを除外する操作が可能。
条件付きでカラムを削除したいときや、特殊なフィルタリングを行いたい場合に有効。
df.pop()
code:py
# col2を削除して、そのデータを取得
col2_data = df.pop('col2')
カラムを削除すると同時に、そのカラムのデータを取得する
del
code:py
del df'hoge'
Pythonの標準的な方法
破壊的
転置
code:pu
df.T
すべての列が同じデータ型ではない場合に転置を使うと、列のデータ型は無視される
転置をして、更に転置をして戻すと、元の型情報が失われる
df.reindex
順番を変えられる
色々オプションが有る
df.rename()
カラム名の変更
code:py
df = df.rename(columns={'old_name1': 'new_name1', 'old_name2': 'new_name2'})
演算
要素ごとの演算
各要素に対してスカラー値の演算を行う
code:python
print(df * 2) # 出力:
# A B C
# 0 2 8 10
# 1 4 10 14
# 2 6 12 18
列ごとの演算
各列同士での演算を行う
code:python
df'D' = df'A' * df'B'
print(df) # 出力:
# A B C D
# 0 1 4 5 4
# 1 2 5 7 10
# 2 3 6 9 18
df.describe()
結合・操作
pd.concat
pd.merge(df1, df2)
pandas: df.groupby()
pandas: df.reset_index()
pd.pivot_table
pd.apply
pandas: DataFrameの各要素、列、または行に対して関数を適用
code:python
df = pd.DataFrame({
'A': 1, 2, 3,
'B': 10, 20, 30
})
df'C' = df'A'.apply(lambda x: x ** 2)
print(df) # 出力:
# A B C
# 0 1 10 1
# 1 2 20 4
# 2 3 30 9
applyは柔軟な操作を行う際に便利な関数
保存・読み込み
pd.to_csv
pandas: DataFrameをCSVファイルとして保存
code:python
df.to_csv('output.csv', index=False)
- index=Falseで行ラベル(インデックス)を保存しないように指定
pd.read_csv
pd.to_excel
pandas: DataFrameをExcelファイルとして保存
code:python
df.to_excel('output.xlsx', index=False)
Excel形式での保存は、ビジネス用途でよく使用される
pd.read_excel
Excelファイルを読み込み、pandas: DataFrameを作成
code:python
df = pd.read_excel('input.xlsx')
print(df)
- read_excelはExcelファイルのデータを効率的に取り込むために使用される
pd.to_json
pandas: DataFrameをJSON形式で保存
`text
code:python
df.to_json('output.json')
`
- JSON形式での保存は、Webアプリケーションとのデータ連携などに使用される
pd.read_json
JSONファイルを読み込み、pandas: DataFrameを作成
`text
code:python
df = pd.read_json('input.json')
print(df)
`
- read_jsonでJSONデータを直接pandas: DataFrameに変換可能